#include <iostream>
#include "auto_ptr.hpp"
#include "shared_ptr.hpp"
void autoPtrTest()
{
    crawler::auto_ptr<int> sp1(new int(99));
    crawler::auto_ptr<int> sp2(sp1); // 管理权转移

    std::cout << *sp2 << std::endl;
    // *sp1 = 20; // sp1悬空，访问是非法的    
    *sp2 = 10;
    std::cout << *sp2 << std::endl;
}

void sharedPtrTest()
{
    crawler::shared_ptr<int> sp1(new int(99));
    crawler::shared_ptr<int> sp2(sp1);
    std::cout << *sp1 << std::endl; // 99
    std::cout << *sp2 << std::endl; // 99

    crawler::shared_ptr<int> sp3(new int(100));
    std::cout << *sp3 << std::endl; // 100
    sp3 = sp1;
    std::cout << *sp3 << std::endl; // 99

    crawler::shared_ptr<int> sp4;
}

int main()
{
    // autoPtrTest();
    sharedPtrTest();

    return 0;
}